package com.dzwww.recommend.rule.common.constant;

import cn.hutool.core.util.StrUtil;
import com.dzwww.recommend.rule.common.api.ApiMessage;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.Setter;
import org.apache.commons.lang3.StringUtils;

/**
 * CommonErrorMessage
 * <p>
 *
 * @author lixin
 * @version 1.0
 * @date 2018/11/27 7:24 PM
 */
@Getter
@AllArgsConstructor
public enum CommonErrorMessage implements ApiMessage {

    /**
     * 检验失败
     */
    VERIFY_ERROR("校验失败"),

    /**
     * ES 失败
     */
    ES_ERROR("ES操作失败"),

    /**
     * ES 添加失败
     */
    ES_ADD_ERROR( "ES添加失败"),

    /**
     * ES 批量操作失败
     */
    ES_BATCH_ERROR("ES批量操作失败"),

    /**
     * ES 查询失败
     */
    ES_SELECT_ERROR("ES查询失败"),

    /**
     * Dubbo调用失败
     */
    DUBBO_CONSUMER_ERROR("Dubbo调用失败"),

    /**
     * 系统异常
     */
    SYSTEM_ERROR("系统异常"),

    /**
     * http服务调用失败
     */
    HTTP_REQUEST_ERROR("Http服务调用失败"),

    /**
     * http服务调用失败
     */
    ATTENTION_LIMIT_ERROR("关注账号数超出限制"),

    /**
     * 机构不存在
     */
    ORGANIZATION_NOT_EXIST("当前登录用户对应的机构不存在"),

    /**
     * 机构对应的主账号不存在
     */
    ORGANIZATION_USER_NOT_EXIST("当前登录用户对应的机构的主账号不存在"),
    ;


    /**
     * 错误信息
     */
    @Setter
    private String message;


    /**
     * 添加更多的错误信息
     *
     * @param msg       message
     * @param arguments 需要格式化的参数
     * @return CommonErrorMessage
     */
    public CommonErrorMessage addMsg(String msg, Object... arguments) {
        this.message = StringUtils.join(this.message, StrUtil.format(msg, arguments));
        return this;
    }

    @Override
    public String getCode() {
        return this.toString();
    }

}
